package real.jindong;

public class MaxValue {

    //最小粽子发放问题（算法题）
    //
public int min(int n, String s) {
    int[] dp = new int[n + 1];
    // 每人至少一个
    for (int i = 0; i <= n; i++) dp[i] = 1;

    // 从左到右处理“+”
    for (int i = 0; i < n; i++) {
        if (s.charAt(i) == '+') {
            dp[i + 1] = dp[i] + 1;
        }
    }

    // 从右到左处理“-”
    for (int i = n - 1; i >= 0; i--) {
        if (s.charAt(i) == '-') {
            dp[i] = Math.max(dp[i], dp[i + 1] + 1);
        }
    }

    // 求和
    int sum = 0;
    for (int i = 0; i <= n; i++) sum += dp[i];
    return sum;
}


    public static void main(String[] args) {
        MaxValue mv = new MaxValue();

        // 测试用例1：样例输入
        int res1 = mv.min(3, "--+");
        System.out.println("Test1: " + res1); // 期望输出8

        // 测试用例2：全为+
        int res2 = mv.min(4, "++++");
        System.out.println("Test2: " + res2); // 期望输出4

        // 测试用例3：全为-
        int res3 = mv.min(4, "----");
        System.out.println("Test3: " + res3); // 期望输出10
    }

}
